﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace TwoGesture
{
    class ControlCrearCuest
    {
        private static ControlCrearCuest ObjCtrCrearCuest = null;
        private Conexion ObjConexion = Conexion.InsConexion();

        public static ControlCrearCuest instCrearCuest()
        {
            if (ObjCtrCrearCuest == null)
            {
                ObjCtrCrearCuest = new ControlCrearCuest();
            }
            return ObjCtrCrearCuest;
        }


        internal SqlDataReader LlenarCombo()
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from tema where activo=1", ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();
            return dr;
        }

        internal List<Categorias> llenarTablaPreguntas(string p)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("select max(idpregunta) from Pregunta where IdTema=@dato and activo=1", ConexionSQL);
            cmd.Parameters.AddWithValue("@dato", p);
            int maximo = (cmd.ExecuteScalar().GetHashCode()) + 1;
            cmd = new SqlCommand("select * from Pregunta where IdTema=@dato and activo=1", ConexionSQL);
            cmd.Parameters.AddWithValue("@dato", p);
            SqlDataReader dr = cmd.ExecuteReader();
            List<Categorias> Lista = new List<Categorias>();

            while (dr.Read())
            {
                Lista.Add(new Categorias() { Descripcion = dr.GetString(1), id = dr.GetInt32(0) });
            }
            List<Categorias> Lista2 = new List<Categorias>();

            int cont = 20;
            while (Lista2.Count < 20 && Lista.Count > 0)
            {

                Random rnd = new Random();
                int nro = rnd.Next(1, maximo);

                for (int i = 0; i < Lista.Count; i++)
                {
                    int control = 0;
                    if (Lista[i].id.Equals(nro))
                    {
                        for (int j = 0; j < Lista2.Count; j++)
                        {
                            if (Lista2[j].id.Equals(nro))
                            {
                                control = control + 1;
                            }
                        }
                        if (control == 0)
                        {
                            Lista2.Add(Lista[i]);
                            control = 0;
                            Lista.Remove(Lista[i]);
                        }
                    }
                }
            }
            cont = 0;

            return Lista2;
        }


        internal SqlDataReader LlenarTabla(Label id)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from paciente where activo=1 and iddoctor=" + id.Text.ToString(), ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();

            return dr;
        }

        internal void insertarCuestionario(TextBox txtNombreQuest, DataGridView dgvCuestPreguntas, DataGridView dgvParticipantesLista, Label LblIdDoctor)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();

            SqlCommand cmd = new SqlCommand("select COUNT(idcuestionario) from Cuestionario where Activo=1 and Cuestionario=@nombre", ConexionSQL);
            cmd.Parameters.AddWithValue("@nombre", txtNombreQuest.Text);
            int cont = cmd.ExecuteScalar().GetHashCode();
            if (cont == 0)
            {
                cmd = new SqlCommand("insert into Cuestionario values(@nombre,default,@IdDoctor)", ConexionSQL);
                cmd.Parameters.AddWithValue("@nombre", txtNombreQuest.Text);
                cmd.Parameters.AddWithValue("@IdDoctor", LblIdDoctor.Text);
                SqlDataReader dr = cmd.ExecuteReader();
                dr.Close();
                cmd = new SqlCommand("select idcuestionario from Cuestionario where Activo=1 and Cuestionario=@nombre", ConexionSQL);
                cmd.Parameters.AddWithValue("@nombre", txtNombreQuest.Text);
                cont = cmd.ExecuteScalar().GetHashCode();
                


                for (int i = 0; i < dgvCuestPreguntas.Rows.Count; i++)
                {
                    cmd = new SqlCommand("insert into cuestionarioPregunta values(@idcuestionario,@idpregunta)", ConexionSQL);
                    cmd.Parameters.AddWithValue("@idcuestionario",cont);
                    cmd.Parameters.AddWithValue("@idpregunta", dgvCuestPreguntas.Rows[i].Cells[0].Value.ToString());
                    dr = cmd.ExecuteReader();
                    dr.Close();
                }
                for (int i = 0; i < dgvParticipantesLista.Rows.Count; i++)
                {
                    cmd = new SqlCommand("insert into cuestionarioUsuario values(@idcuestionario,@idpersona)", ConexionSQL);
                    cmd.Parameters.AddWithValue("@idcuestionario", cont);
                    cmd.Parameters.AddWithValue("@idpersona", dgvParticipantesLista.Rows[i].Cells[0].Value.ToString());
                    dr = cmd.ExecuteReader();
                    dr.Close();
                }
            }
        }

        internal SqlDataReader llenarTablaTest(Label id)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("Select * from Cuestionario where activo=1 and iddocto=" + id.Text.ToString(), ConexionSQL);
            SqlDataReader dr = cmd.ExecuteReader();

            return dr;
        }

        public int idcategoria(string idcuestionario)
        {
            int idcat=0;
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();

            SqlCommand cmd = new SqlCommand("select distinct idtema from vw_test where idcuestionario=@idcuestionario ", ConexionSQL);
            cmd.Parameters.AddWithValue("@idcuestionario", idcuestionario);
            idcat = cmd.ExecuteScalar().GetHashCode();
            return idcat;
        }

        internal List<Categorias> llenarTablaPre(Label lblidcuestionario)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("select idpregunta,descripcion from vw_test where idcuestionario=@dato", ConexionSQL);
            cmd.Parameters.AddWithValue("@dato", lblidcuestionario.Text);
            SqlDataReader dr = cmd.ExecuteReader();
            List<Categorias> Lista = new List<Categorias>();

            while (dr.Read())
            {
                Lista.Add(new Categorias() { Descripcion = dr.GetString(1), id = dr.GetInt32(0) });
            }
            return Lista;
        }

        internal SqlDataReader llenarTblusuario(Label lblidcuestionario)
        {
            SqlConnection ConexionSQL = ObjConexion.Enlace();
            ObjConexion.Enlace();
            ConexionSQL.Close();
            ConexionSQL.Open();
            SqlCommand cmd = new SqlCommand("select idpaciente,(nombre+' '+apaterno+' '+amaterno) as nombre,activo from vw_paciente where idcuestionario=@dato and activo2=1", ConexionSQL);
            cmd.Parameters.AddWithValue("@dato", lblidcuestionario.Text);
            SqlDataReader dr = cmd.ExecuteReader();

            return dr;
        }
    }
}
